package com.baitiaojun.datasource.core.datasource;

import com.alibaba.druid.util.StringUtils;
import com.baitiaojun.common.enums.impl.DataSourceTypeEnums;

/**
 * 用于缓存数据源
 */
public class DataSourceHolder {

    /**
     * 为各个线程提供变量副本
     */
    private static final ThreadLocal<String> DB_NAME = new ThreadLocal<>();

    /**
     * 添加数据源
     * @param dbName
     */
    public static void setDb(String dbName) {
        DB_NAME.set(dbName);
    }

    /**
     * 获取数据源，为空的话默认返回主库
     * @return
     */
    public static String getDb() {
        String dbName = DB_NAME.get();
        if (StringUtils.isEmpty(dbName)) {
            dbName = DataSourceTypeEnums.DEFAULT_DB.getName();
        }
        return dbName;
    }

    /**
     * 清空所有数据源
     */
    public static void remove() {
        DB_NAME.remove();
    }
}